跳到主要内容

Python3 的函数

在Python中,函数使用 def 关键字来声明。

1. 基本函数声明

最简单的函数

def say_hello():
"""这是一个简单的问候函数"""
print("Hello, World!")

# 调用函数
say_hello() # 输出: Hello, World!

带参数的函数

def greet(name):
"""带一个参数的函数"""
print(f"Hello, {name}!")

# 调用函数
greet("Alice") # 输出: Hello, Alice!
greet("Bob") # 输出: Hello, Bob!

2. 不同类型的参数

位置参数

def introduce(name, age, city):
"""带多个位置参数的函数"""
print(f"我叫{name},今年{age}岁,来自{city}")

# 调用时按顺序传递参数
introduce("张三", 25, "北京")

默认参数

def greet_person(name, greeting="Hello"):
"""带默认参数的函数"""
print(f"{greeting}, {name}!")

# 调用方式
greet_person("Alice") # 输出: Hello, Alice!
greet_person("Bob", "Hi") # 输出: Hi, Bob!
greet_person("Charlie", greeting="Hey") # 输出: Hey, Charlie!

关键字参数

def create_profile(name, age, city, country="中国"):
"""使用关键字参数"""
print(f"姓名: {name}, 年龄: {age}, 城市: {city}, 国家: {country}")

# 调用时可以指定参数名,顺序可以改变
create_profile(age=25, city="上海", name="李四")
create_profile("王五", city="广州", age=30, country="中国")

3. 返回值

返回单个值

def add(a, b):
"""返回两个数的和"""
return a + b

result = add(5, 3)
print(result) # 输出: 8

返回多个值

def calculate(a, b):
"""返回多个值(实际上返回一个元组)"""
sum_result = a + b
difference = a - b
product = a * b
quotient = a / b if b != 0 else None
return sum_result, difference, product, quotient

# 接收多个返回值
s, d, p, q = calculate(10, 5)
print(f"和: {s}, 差: {d}, 积: {p}, 商: {q}")

4. 各种函数示例

使用 *args 接收可变参数

def sum_all(*args):
"""计算任意数量数字的和"""
total = 0
for num in args:
total += num
return total

print(sum_all(1, 2, 3)) # 输出: 6
print(sum_all(1, 2, 3, 4, 5)) # 输出: 15

使用 **kwargs 接收关键字参数

def print_info(**kwargs):
"""打印任意关键字参数"""
for key, value in kwargs.items():
print(f"{key}: {value}")

print_info(name="Alice", age=25, city="Beijing")
# 输出:
# name: Alice
# age: 25
# city: Beijing

5. 函数调用方式

直接调用

def multiply(x, y):
return x * y

result = multiply(4, 5)
print(result) # 输出: 20

嵌套调用

def square(x):
return x * x

def sum_of_squares(a, b):
return square(a) + square(b)

result = sum_of_squares(3, 4)
print(result) # 输出: 25

作为参数传递

def apply_operation(x, y, operation):
"""将函数作为参数传递"""
return operation(x, y)

def add(a, b):
return a + b

def multiply(a, b):
return a * b

print(apply_operation(5, 3, add)) # 输出: 8
print(apply_operation(5, 3, multiply)) # 输出: 15

6. Lambda函数(匿名函数)

# 简单的lambda函数
square = lambda x: x ** 2
print(square(5)) # 输出: 25

# 在排序中使用
students = [("Alice", 85), ("Bob", 92), ("Charlie", 78)]
sorted_students = sorted(students, key=lambda x: x[1])
print(sorted_students) # 按分数排序

7. 实际应用示例

def calculate_bmi(weight, height):
"""
计算BMI指数

参数:
weight -- 体重(kg)
height -- 身高(m)

返回:
BMI值和健康状态
"""
bmi = weight / (height ** 2)

if bmi < 18.5:
status = "偏瘦"
elif bmi < 24:
status = "正常"
elif bmi < 28:
status = "超重"
else:
status = "肥胖"

return round(bmi, 2), status

# 调用函数
bmi, status = calculate_bmi(70, 1.75)
print(f"BMI: {bmi}, 状态: {status}")

关键要点总结:

  1. 声明: 使用 def 函数名(参数):
  2. 调用: 使用 函数名(参数)
  3. 返回值: 使用 return 语句
  4. 文档: 使用三引号添加文档字符串
  5. 参数: 可以有位置参数、默认参数、可变参数等